# _*_ coding: UTF-8 _*_
# @Time     : 2021/10/26 下午 03:07
# @Author   : Li Jie
# @Site     : http://www.hzdledu.cn/
# @File     : prac.py
# @Software : PyCharm

# 1.# 求 1-100以内所有含6的数
def foo1():
    list1 = []
    for i in range(1, 101):
        j = str(i)
        if '6' in j:
            list1.append(i)
    print(list1)


# 2、Chuckie Lucky赢了100W美元，
# 他把它存入一个每年盈利8%的账户。
# 在每年的最后一天，Chuckie取出10W美元。
# 编写一个程序，计算需要多少年Chuckie就会清空他的账户。
def foo2():
    print('-----------------------------------')
    money = 100
    year = 0
    while True:
        money = money * (1 + 0.08)
        money = money - 10
        year += 1
        if money <= 0:
            break
    return year


# 3、题目：猴子吃桃问题：猴子第一天摘下若干个桃子，当即吃了一半，还不瘾，又多吃了一个 第二天早上又将剩下的桃子吃掉一半，又多吃了一个。
# 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时，见只剩下一个桃子了。求第一天共摘了多少。
# 程序分析：采取逆向思维的方法，从后往前推断。
def foo3():
    print('--------------------------------')
    peaches = [1]
    for i in range(9):
        peaches.append((peaches[i] + 1) * 2)
    peaches.reverse()
    return peaches


# 4、不使用自带函数，写一个函数，用于返回一个数的绝对值
def foo4(n):
    print('---------------------------')
    # if n>=0:
    #     return n
    # else:
    #     return n*-1

    return (n ** 2) ** 0.5


# 5、写一个函数，用来求三个数的最大值
def foo5(a, b, c):
    print('-----------------')
    if a > b:
        if a > c:
            return a
        else:
            return c
    else:
        if b > c:
            return b
        else:
            return c


# 提升：
# 6、写一个函数，返回输入整数（大于999小于10000）的每位数的数字之和。
def foo6(n):
    print('-----------------')
    str1 = str(n)
    sum = 0
    for n in str1:
        sum += int(n)
    return sum


# 7.递归实现阶乘：
# n！=nxn-1xn-2x....1
# 5!=5x4！
def foo7(n):
    if n == 1:
        return 1
    else:
        return n * foo7(n - 1)


# 8.实现1！+2！+3！+。。。+n！
def foo8(n):
    print('-------------------')
    sum = 0
    for i in range(1, n + 1):
        sum += foo7(i)
    return sum


def foo9(n):
    sum1 = 0
    for i in range(1, n + 1):
        sum2 = 1
        for j in range(1, i + 1):
            sum2 *= j
        sum1 += sum2
    return sum1


if __name__ == '__main__':
    foo1()
    print(foo2())
    print(foo3())
    print(foo4(-5))
    print(foo6(12345))
    print(foo7(5))
    print(foo8(4))
    print(foo9(4))
